package cn.crawler.app.crown.modules.services;

import cn.crawler.app.crown.modules.models.CrownConfig;
import cn.crawler.app.crown.modules.models.CrownMatch;
import cn.crawler.app.crown.modules.models.enums.MatchStageEnum;
import cn.crawler.framework.base.service.BaseService;
import cn.crawler.framework.page.Pagination;

import java.util.Date;
import java.util.List;

public interface CrownMatchService extends BaseService<CrownMatch> {


    /**
     * 根据联赛名、主队名、客队名、比赛日期判断查询比赛
     *
     * @param league   联赛名
     * @param mbTeam   主队名
     * @param tgName   客队名
     * @param dateTime 比赛日期
     * @return CrownMatch
     */
    CrownMatch queryByTeamInfo(String league, String mbTeam, String tgName, Date dateTime);


    /**
     * 联赛列表
     *
     * @param stage    今日、早盘
     * @param pageNo   页码
     * @param pageSize 页面容量
     * @return Pagination
     */
    Pagination leagueList(MatchStageEnum stage, int pageNo, int pageSize);

    /**
     * 获取赛事及其玩法列表
     *
     * @param stage      今日、早盘
     * @param leagueList 联赛集合
     * @param pageNo     页码
     * @param pageSize   页面容量
     * @return Pagination
     */
    Pagination matchList(MatchStageEnum stage, List<String> leagueList, int pageNo, int pageSize);

    /**
     * 赛果列表
     *
     * @param start    开始日期
     * @param end      结束日期
     * @param pageNo   页码
     * @param pageSize 页面容量
     * @return Pagination
     */
    Pagination resultList(Long start, Long end, int pageNo, int pageSize);


    /**
     * 单条赛果
     *
     * @param id
     * @return
     */
    CrownMatch result(String id);

    /**
     * 爬取赛果
     *
     * @param startTime 开始时间(毫秒级)
     * @param endTime   结束时间(毫秒级)
     */
    void crawlMatchResult(Long startTime, Long endTime);


    /**
     * 比赛数量统计
     *
     * @return List
     */
    List matchCount();
}
